package com.sword.www.designPattern.singleton;

import java.io.Serializable;

/**
 * 懒汉式单例模式
 * @author linmeng
 * @version 1.0
 * @date 2021年11月9日 21:25
 */
public class LazySingleton implements Serializable {
    private static volatile LazySingleton lazySingleton;

    private LazySingleton(){}

    /**
     *
     * 懒汉式单例:双重校验并加锁，但是new 对象不是原子性操作，还是有可能并发安全问题
     *
     * @author linmeng
     * @date 2021年11月9日 21:27
     * @return com.sword.www.designPattern.Singleton
     */
    public static LazySingleton getLazyInstance(){
        if (lazySingleton ==null){
            synchronized (LazySingleton.class){
                if (lazySingleton ==null){
                    lazySingleton = new LazySingleton();
                }
            }
        }
        return lazySingleton;
    }
}
